package com.hqhy.like.front.cart.service;

import com.hqhy.like.common.pojo.authentication.CurrentPrincipal;
import com.hqhy.like.front.cart.pojo.vo.CartListItemVO;


import java.util.List;

public interface ICartService {
    /**
     * 将商品添加到购物车
     *
     * @param currentPrincipal 当事人
     * @param dishId          商品ID
     * @param dishNum         商品数量
     */
    void add(CurrentPrincipal currentPrincipal, Integer dishId, Integer dishNum);

    /**
     * 删除购物车中的商品
     *
     * @param currentPrincipal 当事人
     * @param dishId          商品ID
     */
    void delete(CurrentPrincipal currentPrincipal,Integer dishId);

    /**
     * 更新购物车中的商品
     *
     * @param currentPrincipal 当事人
     * @param dishId          商品ID
     * @param dishNum         商品数量
     */
    void update(CurrentPrincipal currentPrincipal, Integer dishId, Integer dishNum);

    /**
     * 将购物车中商品的数量增加1
     *
     * @param currentPrincipal 当事人
     * @param dishId          商品ID
     * @return 新的数量
     */
    Integer increaseNum(CurrentPrincipal currentPrincipal, Integer dishId);


    /**
     * 将购物车中商品的数量减少1
     *
     * @param currentPrincipal 当事人
     * @param dishId          商品ID
     * @return 新的数量
     */
    Integer reduceNum(CurrentPrincipal currentPrincipal, Integer dishId);

    /**
     * 查询购物车列表
     *
     * @param currentPrincipal 当事人
     * @return 购物车列表
     */
    List<CartListItemVO> list(CurrentPrincipal currentPrincipal);

}
